package com.sfx.jedis.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: sfx
 * Date: 2023-01-20
 * Time: 11:03
 */
public class JedisConnectionFactory {
    //创建jedis连接池对象->在静态代码块初始化
    private static final JedisPool jedispool;
    static {
        //配置jedis连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //配置最大连接数-->也就是我这个Jedis连接池最多可以有多少个连接
        jedisPoolConfig.setMaxTotal(8);//配置最多有8个连接
        //配置最大空闲连接数 ->也就是当没有人连接的时候,我先预备着,当有人来用的时候不用创建,直接
        jedisPoolConfig.setMaxIdle(8);//配置最多有8个控线连接
        //配置最小空闲连接数 ->也就是当等待一段时间后,没有人连接,我就可以把不用的连接释放掉,
        //剩下几个空闲连接或者不剩余
        jedisPoolConfig.setMinIdle(0);
        //设置最大等待时间,也就是当Jedis连接池没有连接的时候,最多等待多长时间,超过这个时间就报错
        jedisPoolConfig.setMaxWaitMillis(1000);//最多等待1000ms

        //连接池需要配置连接池的相关配置和连接相关的参数(IP+端口 + 超时时间+密码)
        jedispool = new JedisPool(jedisPoolConfig,
                "101.42.177.102",6379,1000,"123321");
    }

    /**
     * 当调用静态方法的时候可以直接从Jedis连接池拿到Jedis对象
     */
    public static Jedis getJedis() {
        return jedispool.getResource();
    }
}
